button.setWidth(key.width);
if (key.action !== 'modifier') {
- button.connect('commit', (actor, keyval, str) => {
- if (this._modifiers.size === 0 && str !== '' &&
- keyval && this._oskCompletionEnabled) {
- Main.inputMethod.handleVirtualKey(keyval);
- return;
- }
-
- if (str === '' || !Main.inputMethod.currentFocus ||
- (keyval && this._oskCompletionEnabled) ||
- this._modifiers.size > 0 ||
- !this._keyboardController.commitString(str, true)) {
- if (keyval !== 0) {
- this._forwardModifiers(this._modifiers, Clutter.EventType.KEY_PRESS);
- this._keyboardController.keyvalPress(keyval);
- GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEY_RELEASE_TIMEOUT, () => {
- this._keyboardController.keyvalRelease(keyval);
- this._forwardModifiers(this._modifiers, Clutter.EventType.KEY_RELEASE);
- this._disableAllModifiers();
- return GLib.SOURCE_REMOVE;
- });
- }
- }
-
- if (!this._latched)
- this._setActiveLayer(0);
+ button.connect('commit', (_actor, keyval, str) => {
+ this._commitAction(keyval, str);
});
}
}
}
+ _commitAction(keyval, str) {
+ if (this._modifiers.size === 0 && str !== '' &&
+ keyval && this._oskCompletionEnabled) {
+ Main.inputMethod.handleVirtualKey(keyval);
+ return;
+ }
+
+ if (str === '' || !Main.inputMethod.currentFocus ||
+ (keyval && this._oskCompletionEnabled) ||
+ this._modifiers.size > 0 ||
+ !this._keyboardController.commitString(str, true)) {
+ if (keyval !== 0) {
+ this._forwardModifiers(this._modifiers, Clutter.EventType.KEY_PRESS);
+ this._keyboardController.keyvalPress(keyval);
+ GLib.timeout_add(GLib.PRIORITY_DEFAULT, KEY_RELEASE_TIMEOUT, () => {
+ this._keyboardController.keyvalRelease(keyval);
+ this._forwardModifiers(this._modifiers, Clutter.EventType.KEY_RELEASE);
+ this._disableAllModifiers();
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ }
+
+ if (!this._latched)
+ this._setActiveLayer(0);
+ }
+
_previousWordPosition(text, cursor) {
/* Skip word prior to cursor */
let pos = Math.max(0, text.slice(0, cursor).search(/\s+\S+\s*$/));